package com.Lixiaoqian.CardPlay.model;



import com.Lixiaoqian.CardPlay.bean.Response;
import com.Lixiaoqian.CardPlay.bean.User;
import com.Lixiaoqian.CardPlay.bean.Version;

import java.util.Map;

import okhttp3.MultipartBody;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Query;

/**
 * Created by HuangZhiBo on 2017/2/20/020.
 * email:1043202454@qq.com
 */

public interface UserApi {

    /**
     * 用户登录
     *
     * @param sys
     * @param weiboOpenId
     * @param wechatOpenId
     * @param qqOpenId
     * @param phonenumber
     * @param password
     * @return
     */
    @FormUrlEncoded
    @POST("LoginHandler.ashx/login")
    Call<Response<User>> login(@Field("systemType") byte sys, @Field("weiboOpenId") String weiboOpenId,
                               @Field("wechatOpenId") String wechatOpenId,
                               @Field("qqOpenId") String qqOpenId,
                               @Field("phonenumber") String phonenumber,
                               @Field("password") String password);

    /**
     * 用户注册--用 @Query失败,具体原因不详
     *
     * @param sys
     * @param phonenumber
     * @param password
     * @return
     */
    @FormUrlEncoded
    @POST("RegiserAndRePWHandler.ashx/regiser")
    Call<Response<User>> register(@Field("phonenumber") String phonenumber,
                                  @Field("password") String password,
                                  @Field("systemType") Byte sys);


    /**
     * 重置密码
     *
     * @param phonenumber
     * @param password
     * @return
     */
    @FormUrlEncoded
    @POST("RegiserAndRePWHandler.ashx/resetpassword")
    Call<Response<User>> reSetPass(@Field("phonenumber") String phonenumber,
                                   @Field("password") String password);

    /**
     * 绑定账号
     *
     * @return
     */
    @FormUrlEncoded
    @POST("SetHandler.ashx/setting/accountbind/update")
    Call<Response<User>> bindAccountNumber(@Field("id") int id,
                                           @Field("phonenumber") String phonenumber,
                                           @Field("weiboOpenId") String weiboOpenId,
                                           @Field("wechatOpenId") String wechatOpenId,
                                           @Field("qqOpenId") String qqOpenId);

    /**
     * 解除绑定
     *
     * @return
     */
    @FormUrlEncoded
    @POST("SetHandler.ashx/setting/accountbind/delete")
    Call<Response<User>> unbind(@Field("id") int id,
                                @FieldMap Map<String, String> map);

    /**
     * 获取用户信息
     *
     * @param id
     * @return
     */
    @GET("UserHandler.ashx/user/personal/show")
    Call<Response<User>> getUserInfo(@Query("id") int id);

    /**
     * 修改用户信息
     *
     * @param id
     * @param username
     * @param sex
     * @param email
     * @return
     */
    @Multipart
    @POST("UserHandler.ashx/user/personal/update")
    Call<Response<User>> updataUserInfo(@Part MultipartBody.Part id,
                                        @Part MultipartBody.Part username,
                                        @Part MultipartBody.Part sex,
                                        @Part MultipartBody.Part email,
                                        @Part MultipartBody.Part file
    );

    /**
     * 修改用户信息
     *
     * @param id
     * @param username
     * @param sex
     * @param email
     * @return
     */
    @Multipart
    @POST("UserHandler.ashx/user/personal/update")
    Call<Response<User>> updataUserInfo1(@Part MultipartBody.Part id,
                                         @Part MultipartBody.Part username,
                                         @Part MultipartBody.Part sex,
                                         @Part MultipartBody.Part email

    );

    /**
     * 查看新版本
     *
     * @return
     */
    @GET("SetHandler.ashx/setting/newversion")
    Call<Response<Version>> getVersion();

}
